/*
 * Ejercicio 15	
 * Hacer que la clase TraductoresFactory sea un singleton y hacer un programa 
 * Prueba9, que haga lo mismo que Prueba8 pero accediendo al singleton.
 * */
/*
 * (*) Son los pasos necesarios para hacer un Singleton
 * */
package u12.ejerciciosAdapFacSingl;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TraductoresFactory {
	private static TraductoresFactory tFactory; //(*)
	private ITraductor adaptador;
	private String idioma;
	private String traductor=cargaTraductor();
	
	public static TraductoresFactory getTraductoresFactory(){//(*)
		if (tFactory==null){
			return new TraductoresFactory();
		}
		return new TraductoresFactory();
	}
	
 	private TraductoresFactory(){ //(*)
		
	}
	
	public String getIdioma(){
		
		if(cargaTraductor().indexOf("Frances", 0)!=-1){
			idioma="frances";
		}
		else if(cargaTraductor().indexOf("Ingles", 0)!=-1){
			idioma="ingles";
		}
		else if(cargaTraductor().indexOf("Italiano", 0)!=-1){
			idioma="italiano";
		}
		return idioma;
	}
	
	public ITraductor getTraductorAdapter(){
		if(adaptador==null){
			try {
				adaptador=(ITraductor)Class.forName(traductor).newInstance();
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
			return adaptador;
		}
		return adaptador;
	}
	
	private String cargaTraductor(){
		String linea="";
		FileReader fr=null;
		BufferedReader br=null;
		try{
			fr=new FileReader("src/u12/ejerciciosAdapFacSingl/data/idioma.ini");
			br=new BufferedReader(fr);
			linea=br.readLine();
		}catch(Exception e){
			e.printStackTrace();
		}
		finally{
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return linea;
	}
	
}
